Сервис предназначен для получения s3-ссылки на архив, который содержит выгрузки из БД для аналитического кластера
Сервис случшает топик mz.petition.in.request
Сервис отправляет ответ в топик mz.petition.in.response
request-class: request@urn://rostelekom.ru/ERVU-analyticalCluster/1.0.1
response-class: response@urn://rostelekom.ru/ERVU-analyticalCluster/1.0.1
На любой запрос сервис возвращает ответ вида:
<ns:response xmlns:ns="urn://rostelekom.ru/ERVU-analyticalCluster/1.0.1"> <ns:responseData> <ns:extractRegistry> <ns:FileName>analytics_dump_20231106.delta.zip</ns:FileName> <ns:FileType>application/zip</ns:FileType> <ns:fileDateTime>2023-11-07T11:52:55.512533158</ns:fileDateTime> </ns:extractRegistry> </ns:responseData></ns:response> |
Файл analytics_dump_20231106.delta.zip всегда содержит данные выгрузок за прошлый день (4 csv-файла).
Выгрузка данных происходит на сервере БД каждый день, выгрузку выполняет cron-job по расписанию в 05:00.
Виды выгрузок
По инцидентам
SELECT inc.id AS "ID инцидента", inc.recruit_id AS "Гражданин(ID РВУ)", TO_CHAR(hist.create_date, 'DD.MM.YYYY HH:mi') AS "Время изменения INC", hist.status AS "Статус INC", inc.object AS "Что привело к INC", inc.text AS "Описание INC", inc.reason AS "Причина INC", inc."number" AS "Номер инцидента"FROM incident inc LEFT JOIN incident_history hist ON inc.id = hist.incident_idWHERE DATE_TRUNC('day', hist.create_date) = 'yesterday'::TIMESTAMP; |
По рекрутам
SELECT rct.id AS "Гражданин(ID РВУ)", rct.gender AS "Пол", EXTRACT('YEAR' FROM AGE(NOW(), rct.birth_date)) AS "Возраст", COALESCE((rct.addresses #>> '{0, regionCode}'), '') AS "Регион проживания(МЖ)", COALESCE((rct.addresses #>> '{1, regionCode}'), '') AS "Регион проживания(МП)", COALESCE((rct.addresses #>> '{2, regionCode}'), '') AS "Регион проживания(МН)", CASE WHEN jsonb_path_exists(rct_info.info, '$.postponements[*].delayCode ? (@ != null)') = TRUE THEN 'Да' ELSE 'Нет' END AS "Отсрочка/Освобождение", rct_info.info -> 'spouse' ->> 'countLittleChildren' AS "Дети", CASE WHEN rct_info.info -> 'spouse' ->> 'status' = 'Б' THEN 'Состоит в браке' WHEN rct_info.info -> 'spouse' ->> 'status' = '0' THEN 'Не состоит в браке' ELSE '-' END AS "Брак", TO_CHAR(hist.date_time, 'DD.MM.YYYY HH:mi') AS "Время", hist.status AS "Статус", hist.event AS "Событие"FROM recruits rct LEFT JOIN recruits_info rct_info ON rct.id = rct_info.recruit_id LEFT JOIN recruits_history hist ON rct.id = hist.recruit_idWHERE DATE_TRUNC('day', hist.date_time) = 'yesterday'::TIMESTAMP; |
По ограничениям
SELECT rdoc.id AS "ID документа measure", rdoc_item.id AS "ID measure", r.id AS "ID measure справочника", r.name AS "Name measure справочника", rdoc.subpoena_id AS "ID повестки", rdoc.vk_id AS "ID военкомата", TO_CHAR(rdoc_item.updated_at, 'DD.MM.YYYY HH:mi') AS "Дата изменения measure", rdoc_item.status AS "Статус measure", rdoc.type AS "Тип документа measure", rdoc_item.restriction_document_create_id AS "ID документа введения measure", rdoc_item.restriction_document_cancel_id AS "ID документа отмены measure"FROM restriction_document rdoc, restriction_document_item rdoc_item, restriction rWHERE (rdoc.id = rdoc_item.restriction_document_create_id OR rdoc.id = rdoc_item.restriction_document_cancel_id) AND r.id = rdoc_item.restriction_id AND DATE_TRUNC('day', rdoc_item.updated_at) = 'yesterday'::TIMESTAMP; |
По повесткам
SELECT sbp.id AS "ID повестки", TO_CHAR(hist.date_time, 'DD.MM.YYYY HH:mi') AS "Дата изменения повестки", sbp.recruit_id AS "Гражданин(ID РВУ)", sbp.department_id AS "ID военкомата", sbp.delivery_info::json ->> 'deliveryType' AS "Тип направления повестки", hist.status_id AS "Статус повестки", sbp_stat.id AS "ID Статус повестки", sbp_stat.code AS "Код статуса повестки"FROM subpoena sbp LEFT JOIN subpoena_history hist ON sbp.id = hist.subpoena_id LEFT JOIN subpoena_status sbp_stat ON hist.status_id = sbp_stat.idWHERE DATE_TRUNC('day', hist.date_time) = 'yesterday'::TIMESTAMP; |
Добавить комментарий